/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package control;

import basicprotocol.BasicProtocol;
import basicprotocol.SimpleMessage;
import java.io.IOException;
import java.net.ConnectException;
import java.net.Socket;
import java.net.UnknownHostException;
import modelo.cliente;
import vista.vistaLogin;
import modelo.modeloLogin;

/**
 *
 * @author Estudiante
 */
public class controladora {

    protected controladora() {
        vista = new vistaLogin(this);
        login = new modeloLogin();
    }

    /**
     * 
     * @return
     */
    public static controladora instance() {
        if (uniqueInstance == null) {
            uniqueInstance = new controladora();
        }
        return uniqueInstance;
    }

    /**
     * 
     * @param persona
     * @param clave
     * @return
     */
    
    public Boolean cargarArchivo(String persona, String clave) {
        return login.cargarArchivo(persona, clave);
    }

    public Boolean insertarCliente(cliente nuevoCliente) {
        int command = BasicProtocol.INSERT_CLIENTE;

        try {
            Socket skt = new Socket(sktAddress, BasicProtocol.DEFAULT_PORT);
            SimpleMessage msgToServer = new SimpleMessage(command, getClass().getName(), nuevoCliente);
            msgToServer.send(skt);
            SimpleMessage srvrAck = SimpleMessage.receive(skt);
            System.out.println(String.format("Recibido: %s", srvrAck));
            return true;
        } catch (ConnectException e) {
            System.out.println("No se pudo establecer la conexi\u00F3n con " + sktAddress);
            return false;
        } catch (UnknownHostException e) {
            System.out.println("Server desconocido " + sktAddress);
            return false;
        } catch (IOException e) {
            System.out.println("Error de I/O Stream:/n" + e.toString());
            return false;
        } catch (Exception e) {
            System.out.println("Error Inesperado:\n" + e.toString());
            return false;
        }
    }
    
    public void cerrarAplicacion() {
        System.exit(0);
    }
    
    private String sktAddress = "localhost";
    private static controladora uniqueInstance = null;
    private modeloLogin login;
    private vistaLogin vista;
}
